// pages/rank/index.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    currentTab: 'all', // 当前选中的标签
    userInfo: null,    // 用户信息
    myScore: 0,        // 我的最高分
    myRank: null,      // 我的排名
    rankList: [],      // 排行榜数据
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.getUserInfo();
    this.loadRankData();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.loadRankData(this.data.currentTab);
    wx.stopPullDownRefresh();
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      title: `我在连连看中获得了${this.data.myScore}分，快来挑战我吧！`,
      path: '/pages/index/index',
      imageUrl: '/images/share-img.png' // 分享图片
    };
  },

  // 获取用户信息
  getUserInfo() {
    const userInfo = wx.getStorageSync('userInfo');
    const myScore = wx.getStorageSync('highScore') || 0;
    
    this.setData({
      userInfo,
      myScore
    });
  },

  // 切换标签
  switchTab(e) {
    const tab = e.currentTarget.dataset.tab;
    if (tab === this.data.currentTab) return;
    
    this.setData({ currentTab: tab });
    this.loadRankData(tab);
  },

  // 加载排行榜数据
  loadRankData(tab = 'all') {
    wx.showLoading({ title: '加载中...' });

    // 这里应该调用云函数获取排行榜数据
    // 示例数据结构
    const mockData = [
      {
        avatarUrl: '/images/default-avatar.png',
        nickName: '玩家1',
        score: 1000,
        playTime: '2024-03-26'
      },
      // ... 更多数据
    ];

    setTimeout(() => {
      this.setData({
        rankList: mockData
      });
      this.calculateMyRank();
      wx.hideLoading();
    }, 500);
  },

  // 计算我的排名
  calculateMyRank() {
    if (!this.data.myScore) return;

    let rank = 1;
    for (const item of this.data.rankList) {
      if (item.score > this.data.myScore) {
        rank++;
      }
    }
    
    this.setData({ myRank: rank });
  },
})